﻿// using System;
// using System.Collections.Generic;
// using Slate;
// using Slate.ActionClips;
// using UnityEditor;
// using UnityEngine;
//
// namespace UniFramework.Skill
// {
// 	public class SkillCutsceneEditorUtils
// 	{
// 		public static string savePath = "Assets/ABRes/Test";
//
// 		/// <summary>
// 		/// 显示当前选择的Cutscene数据
// 		/// </summary>
// 		[MenuItem("Wfp/Skill Data Create")]
// 		public static void ShowCutsceneData()
// 		{
// 			GameObject obj = Selection.activeGameObject;
// 			if (obj == null)
// 			{
// 				Debug.Log("请选择一个物体");
// 				return;
// 			}
//
// 			Cutscene cutscene = obj.GetComponent<Cutscene>();
// 			if (cutscene == null)
// 			{
// 				Debug.Log("请选择一个Cutscene");
// 				return;
// 			}
//
// 			List<CutsceneTrack> trackList = cutscene.groups[1].tracks;
// 			SkillConfig result = HandleSkillConfig(trackList);
// 			AssetDatabase.CreateAsset(result, savePath);
// 			AssetDatabase.Refresh();
// 		}
//
// 		/// <summary>
// 		/// 处理技能数据
// 		/// </summary>
// 		/// <param name="trackList"></param>
// 		/// <returns></returns>
// 		private static SkillConfig HandleSkillConfig(List<CutsceneTrack> trackList)
// 		{
// 			SkillConfig skillConfig = ScriptableObject.CreateInstance<SkillConfig>();
// 			for (int i = 0; i < trackList.Count; i++)
// 			{
// 				CutsceneTrack track = trackList[i];
// 				EClipType clipType = ClipTypeHelper.GetClipTypeByClassType(track.GetType());
// 				switch (clipType)
// 				{
// 					case EClipType.None:
// 						break;
// 					//处理动画
// 					case EClipType.Animation:
// 						HandleSkillAnimationConfig(ref skillConfig, track);
// 						break;
// 					//处理特效
// 					case EClipType.Effect:
// 						HandleSkillEffectConfig(ref skillConfig, track);
// 						break;
// 					case EClipType.Audio:
// 						break;
// 					case EClipType.Bullet:
// 						break;
// 					case EClipType.Damage:
// 						break;
// 					//处理Buff
// 					case EClipType.Buff:
// 						HandleSkillBuffConfig(ref skillConfig, track);
// 						break;
// 				}
// 			}
//
// 			return skillConfig;
// 		}
//
// 		/// <summary>
// 		/// 从slate分析技能数据，并注入到技能数据当中去
// 		/// </summary>
// 		/// <param name="skillConfig"></param>
// 		/// <param name="track"></param>
// 		/// <returns></returns>
// 		private static void HandleSkillEffectConfig(ref SkillConfig skillConfig, CutsceneTrack track)
// 		{
// 			var actionClipList = track.clips;
// 			SkillEffectConfig skillEffectConfig = new SkillEffectConfig();
// 			foreach (var actionClip in actionClipList)
// 			{
// 				CreateEffectClip clip = (CreateEffectClip)actionClip;
// 				SkillEffectData skillEffectData = new SkillEffectData()
// 				{
// 					effectPrefab = clip.effectData.effectPrefab,
// 					offset = clip.effectData.offset,
// 					beginTime = clip.startTime,
// 					timeLen = clip.length,
// 				};
// 				skillEffectConfig.skillEffectDataList.Add(skillEffectData);
// 			}
//
// 			skillConfig.skillEffectConfig = skillEffectConfig;
// 		}
//
// 		/// <summary>
// 		/// 处理技能动画逻辑
// 		/// </summary>
// 		/// <param name="skillConfig"></param>
// 		/// <param name="track"></param>
// 		private static void HandleSkillAnimationConfig(ref SkillConfig skillConfig, CutsceneTrack track)
// 		{
// 			var actionClipList = track.clips;
// 			SkillAnimationConfig skillAnimationConfig = new SkillAnimationConfig();
// 			foreach (var actionClip in actionClipList)
// 			{
// 				AnimationClip animationClip = null;
// 				float beginTime = -1;
// 				float timeLen = 0;
// 				//处理 PlayAnimatorClip
// 				if (actionClip is PlayAnimatorClip)
// 				{
// 					PlayAnimatorClip clip = (PlayAnimatorClip)actionClip;
// 					animationClip = clip.animationClip;
// 					beginTime = clip.startTime;
// 					timeLen = clip.length;
// 				}
// 				//处理 PlayAnimationClip
// 				else if (actionClip is PlayAnimationClip)
// 				{
// 					PlayAnimationClip clip = (PlayAnimationClip)actionClip;
// 					animationClip = clip.animationClip;
// 					beginTime = clip.startTime;
// 					timeLen = clip.length;
// 				}
//
// 				SkillAnimationData skillEffectData = new SkillAnimationData()
// 				{
// 					beginTime = beginTime,
// 					animationClip = animationClip,
// 					timeLen = timeLen,
// 				};
// 				skillAnimationConfig.skillAnimationDataList.Add(skillEffectData);
// 			}
//
// 			skillConfig.skillAnimationConfig = skillAnimationConfig;
// 		}
//
// 		/// <summary>
// 		/// 处理buff数据
// 		/// </summary>
// 		/// <param name="skillConfig"></param>
// 		/// <param name="track"></param>
// 		private static void HandleSkillBuffConfig(ref SkillConfig skillConfig, CutsceneTrack track)
// 		{
// 			var actionClipList = track.clips;
// 			SkillBuffConfigNode skillBuffConfigNode = new SkillBuffConfigNode();
// 			foreach (var actionClip in actionClipList)
// 			{
// 				CreateBuffClip clip = (CreateBuffClip)actionClip;
// 				SkillBuffData skillBuffData = new SkillBuffData()
// 				{
// 					beginTime = clip.startTime,
// 					buffId = clip.buffId,
// 				};
// 				skillBuffConfigNode.skillBuffDataList.Add(skillBuffData);
// 			}
//
// 			skillConfig.skillBuffConfigNode = skillBuffConfigNode;
// 		}
// 	}
// }